package com.opensourcebolivia.navidar.service;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;
import com.opensourcebolivia.navidar.modelo.Navidar;

public enum NavidarDAO {
	INSTANCE;
	/*
	 * Lista de todos los Navidares.
	 */
	public List<Navidar> lista() {
		EntityManager em = EMFService.get().createEntityManager();
		// Read the existing entries
		Query q = em.createQuery("select m from Navidar m");
		List<Navidar> lista = q.getResultList();
		return lista;
	}

	/*
	 * Agrega un navidar.
	 */
	public void add(String organizacion, String lugarRecepcionCajas) {
		synchronized (this) {
			EntityManager em = EMFService.get().createEntityManager();
			Navidar nuevo = new Navidar(organizacion, lugarRecepcionCajas);
			em.persist(nuevo);
			em.close();
		}
	}

	/*
	 * Obtener todos los registros que contengan organizacion,
	 * lugarRecepcionCajas.
	 */
	public List<Navidar> obtener(String organizacion, String lugarRecepcionCajas) {
		EntityManager em = EMFService.get().createEntityManager();
		Query q = em
				.createQuery("select t from Navidar t where t.organizacion like :organizacion "
						+ "or t.lugarRecepcionCajas like :lugarRecepcionCajas ");
		q.setParameter("organizacion", organizacion);
		q.setParameter("lugarRecepcionCajas", lugarRecepcionCajas);

		List<Navidar> lista = q.getResultList();
		return lista;
	}

	/*
	 * Eliminar registro.
	 */
	public void remove(long id) {
		EntityManager em = EMFService.get().createEntityManager();
		try {
			Navidar obj = em.find(Navidar.class, id);
			em.remove(obj);
		} finally {
			em.close();
		}
	}
}
